#include <stdio.h>

// int Find(int (*arr)[3], int rows, int cols, int k)
// {
//     int x = 0;
//     int y = cols - 1;
//     while (x <= rows - 1 && y >= 0)
//     {
//         if (arr[x][y] < k)
//         {
//             x++;
//         }
//         else if (arr[x][y] > k)
//         {
//             --y;

//         }
//         else
//             return 1;
//     }
//     return 0;
// }
// int main()
// {
//     int k = 0;
//     int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
//     printf("输入要查找的值\n");
//     scanf("%d", &k);
//     int ret = Find(arr, 3, 3, k);
//     if (ret == 1)
//     {
//         printf("找到了\n");
//     }
//     else
//         printf("没找到\n");
//     return 0;
// }

// int main()
// {
//     int a[5] = {5, 4, 3, 2, 1};
//     int *ptr = (int *)(&a + 1);
//     printf("%d,%d", *(a + 1), *(ptr - 1));
//     return 0;
// }
// 4,1

// #define MAX_SIZE A + BUFSIZ
// struct _Rstruct
// {
//     unsigned char q : 4;
//     unsigned char w : 2;
//     unsigned char e;
//     unsigned char r : 1;
// } *_Rstructd;

// 单身狗

// int main()
// {
//     int count = 0;
//     int arr[] = {1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6};
//     int sz = sizeof(arr) / sizeof(arr[0]);
//     for (int i = 0; i < sz; i++)
//     {
//         count = 0;
//         for (int j = 0; j < sz; j++)
//         {
//             if (arr[i] == arr[j])
//             {
//                 count++;
//             }
//         }
//         if (count == 1)
//         {
//             printf("单身狗是:%d\n", arr[i]);
//         }
//     }
//     return 0;
// }

// void Find_single_dog2(int arr[], int sz)
// {
//     int i = 0;
//     int n = 0;
//     for (i = 0; i < sz; i++)
//     {
//         n ^= arr[i];
//     }
//     int pos = 0;
//     for (i = 0; i < 32; i++)
//     {
//         if (1 & (n >> i == 1))
//         {
//             pos = i;
//             break;
//         }
//     }
//     int s1 = 0;
//     int s2 = 0;
//     for (i = 0; i < sz; i++)
//     {
//         if (((arr[i] >> pos) & 1) == 1)
//         {
//             s1 ^= arr[i];
//         }
//     }
//     for (i = 0; i < sz; i++)
//     {
//         if (((arr[i] >> pos)&1) != 1)
//         {
//             s2 ^= arr[i];
//         }
//     }
//     printf("单身狗是：%d 和 %d", s1, s2);
// }

// int main()
// {
//     int arr[] = {1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7};
//     int sz = sizeof(arr) / sizeof(arr[0]);
//     Find_single_dog2(arr, sz);
//     return 0;
// }

#include <assert.h>
#include <ctype.h>

enum State
{
    VALID,
    INVALID
} sta = INVALID;

int my_atio(const char *str)
{
    assert(str);
    if (*str == '\0')
    {
        return 0;
    }
    // 跳过空白字符
    while (isspace(*str))
    {
        str++;
    }
    int flag = 1;
    if (*str == '+')
    {
        flag = 1;
        str++;
    }
    else if (*str == '-')
    {
        flag = -1;
        str++;
    }
    long long r = 0;
    while (*str)
    {
        if (isdigit(*str))
        {
            r = r * 10 + (*str - '0') * flag;
            if (r > 2147483647 || r < -2147483648)
            {
                if (flag == 1)
                {
                    return 2147483647;
                }
                else
                    return -2147483648;
            }
            str++;
        }
        else
        {
            return (int)r;
        }
    }
    sta = VALID;
    return (int)r;
}

int main()
{
    char arr[] = "1234";
    printf("%d\n", my_atio(arr));
    return 0;
}